Technical Q&A QA1269
Mac OS X OpenGL Interfaces


Q: Mac OS X ÉVÉXÉeÉÄå≈óLÇà OpenGL ÉCÉìÉ^ÉtÉFÅ[ÉXÇ…ÇÕâΩǙdžÇËÇ‹Ç∑Ç©ÅH

A: åªç›ÉAÉbÉvÉãÇ™íÒãüǵǃǢÇÈ 4 ǬÇÃäÓñ{ìIÇ» OpenGL ÉCÉìÉ^ÉtÉFÅ[ÉXÇ…ÇÕÅACGLÅAAGLÅANSGLÅAGLUT ǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÁÇà API ÇÕÅAÉsÉNÉZÉãÉtÉHÅ[É}ÉbÉgÇëIëǵÅAOpenGL èÛë‘ÇÃÉRÉìÉeÉLÉXÉgÇçÏê¨ÇµÅAç≈å„Ç…ÉåÉìÉ_ÉâÇÃëIëÇΔ OpenGL ÇÃï`âÊÇ…ïKóvÇ»ÉoÉbÉtÉ@çÏê¨Ççsǡǃ OS å≈óLÇÃÉhÉçÅ[ÉAÉuÉãÇ…ÉAÉ^ÉbÉ`Ç∑ÇÈÇΔǢǧÅAïKê{ÇÃÉ^ÉXÉNÇé¿çsǵNjÇ∑ÅBDZÇÍÇÁÇà API ÇÕÇ∑Ç◊ǃÅAÉoÉbÉtÉ@ÉXÉèÉbÉvÇ™â¬î\Ç≈džÇËÅAÉRÉìÉeÉLÉXÉgÇÃÉpÉâÉÅÅ[É^ÇΔÉIÉvÉVÉáÉìÇê›íËÇ∑ÇÈã@î\LJíÒãüǵNjÇ∑ÅB4 ǬÇà API ÇÕÅAà»â∫ÇÃí ÇËÇ≈Ç∑ÅB

CGL:

CGL Ç∑Ç»ÇÌÇø Core OpenGL ÇÕÅAOpenGL ópÇÃÉAÉNÉZÉXâ¬î\Ç»ç≈LJí·ÉåÉxÉãÇÃÉCÉìÉ^ÉtÉFÅ[ÉX API Ç≈Ç∑ÅBCGL ÇÕÅAÉEÉCÉìÉhÉEÉVÉXÉeÉÄÇÃDZÇΔÇîFéØÇµÇƒÇ¢Ç‹ÇπÇÒÇ™ÅAóºï˚ÇÃÉåÉìÉ_ÉâèÓïÒÇÃåüèoÇ…íºê⁄égópÇ≈Ç´ÇÈÇŸÇ©ÅAÉtÉãÉXÉNÉäÅ[ÉìÇ‹ÇΩÇÕÉIÉtÉXÉNÉäÅ[ÉìÇÃÉCÉìÉ^ÉtÉFÅ[ÉXÇΔǵǃLJégópÇ≈Ç´Ç‹Ç∑ÅBCGL Ç…ÇÕ Cocoa ÇΔ Carbon ÇÃóºï˚Ç©ÇÁÉAÉNÉZÉXÇ≈Ç´ÅANSGLÅAAGL ÇÃóºï˚ǙDZÇà CGL ÇÃè„Ç…ç\ízÇ≥ÇÍǃǢNjÇ∑ÅBÇ‹ÇΩÅAäÆëSÇ» Pbuffer ÉCÉìÉ^ÉtÉFÅ[ÉXLJíÒãüÇ≥ÇÍǃǢNjÇ∑ÅBã@î\ÇÕ OpenGL ÉtÉåÅ[ÉÄÉèÅ[ÉNåoóRÇ≈íÒãüÇ≥ÇÍǃǮÇËÅAÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅACGL ÇÃã@î\Ç…ÉAÉNÉZÉXÇ∑ÇÈÅuOpenGL.hÅvÉwÉbÉ_ÇÉCÉìÉNÉãÅ[ÉhÇ≈Ç´Ç‹Ç∑ÅBCarbon CGL ÇÃÉTÉìÉvÉãÉRÅ[ÉhÇ…ÅACarbon ÇópÇ¢ÇΩ CGL ÇÃégópó·Çé¶ÇµÇƒÇ†ÇËÇ‹Ç∑ÅB

AGL:

AGL ÇÕÅACarbon ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃÇΩÇflÇÃÅAOpenGL ÇΔÇÃÉAÉbÉvÉãÇÃÉCÉìÉ^ÉtÉFÅ[ÉXÇ≈Ç∑ÅBMach-O Ç®ÇÊÇ— CFM ÇÃóºï˚ÇÃÉoÉCÉiÉäÇ…ÇÊǡǃégópÇ≈Ç´Ç‹Ç∑ÅBAGL ÇÕÅAÉEÉCÉìÉhÉEâªÇ≥ÇÍÇΩÉhÉçÅ[ÉAÉuÉãÇΔÉtÉãÉXÉNÉäÅ[ÉìÇÃÉhÉçÅ[ÉAÉuÉãÇÃóºï˚ÇÉTÉ|Å[ÉgǵǃǢNjÇ∑ÅBëOé“ÇÕÉhÉçÅ[ÉAÉuÉãÇΔǵǃ CGrafPtr ÇégópÇ∑ÇÈDZÇΔÇ…ÇÊÇËÅAå„é“ÇÕ aglSetFullScreen Ç…ÉtÉãÉXÉNÉäÅ[ÉìÇÃÉhÉçÅ[ÉAÉuÉãÇíºê⁄ÉLÉÉÉvÉ`ÉÉÅEê›íËÇ≥ÇπÇÈDZÇΔÇ≈é¿åªÇµÇƒÇ¢Ç‹Ç∑ÅBïWèÄÇÃã@î\ÇÃǟǩDžÅAAGL ÇÕÅAaglUseFont ÇégǡǃÉrÉbÉgÉ}ÉbÉvÉtÉHÉìÉgÉåÉìÉ_ÉäÉìÉOã@î\Ç…ÉAÉNÉZÉXǵÅAaglSurfaceTexture ÇΔ Pbuffer ÇÃäÆëSÉTÉ|Å[ÉgÇí Ç∂ǃÅAÉeÉNÉXÉ`ÉÉÇ÷ÇÃÉåÉìÉ_ÉäÉìÉOÇÃã@î\Ç…ÉAÉNÉZÉXǵNjÇ∑ÅBAGL API ÇégǧÇΩÇflÇ…ÅAAGL ÉtÉåÅ[ÉÄÉèÅ[ÉNÇ Mach-O ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…í«â¡Ç≈Ç´Ç‹Ç∑Ç™ÅACFM ÉAÉvÉäÉPÅ[ÉVÉáÉìDžǬǢǃÇÕ OpenGL CFM SDK Çí Ç∂ǃÉXÉ^ÉuÉâÉCÉuÉâÉäÇΔÉwÉbÉ_ÇéÊìæÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBǪÇÃëÊàÍï‡ÇΔǵǃÅACarbon OpenGL ÇÃÉTÉìÉvÉãÇéQèΔǵǃÅACarbon ÉCÉxÉìÉgÇégÇ¡ÇΩÉEÉCÉìÉhÉEâªÇ≥ÇÍÇΩ AGL Ç©ÇÁénÇflÇÈÇÃÇ™ÇÊÇ¢Ç≈ǵÇÂǧÅB

NSOpenGL:

Cocoa ÇÕÅAOpenGL ÇΔÇÃÉCÉìÉ^ÉtÉFÅ[ÉXÇämóßÇ∑ÇÈÇΩÇflÇ…égópÇ≈Ç´ÇÈ 3 ǬÇÃÉNÉâÉXÅANSOpenGLPixelFormatÅANSOpenGLContextÅANSOpenGLView ÇíÒãüǵǃǢNjÇ∑ÅBëΩÇ≠ÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅANSOpenGLView ÇÃÉTÉuÉNÉâÉXâªÇëIÇ‘ÇæÇØÇ≈džÇËÅANSOpenGLPixelFormat Ç‚ NSOpenGLContext Çíºê⁄ÉTÉuÉNÉâÉXâªÇ∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅBNSOpenGLView ÇÕ NSView ÇÃÉTÉuÉNÉâÉXÇ≈džÇËÅAÉrÉÖÅ[Ç… OpenGL ÉRÉìÉeÉìÉcÇï\é¶Ç∑ÇÈÇΩÇflÇ…ïKóvÇ»ã@î\ÇîıǶǃǢNjÇ∑ÅBÉÅÉ\ÉbÉhÇÃêÈåæÇÕÅAAppKit ÉtÉåÅ[ÉÄÉèÅ[ÉNì‡ÇÃÅuNSOpenGLView.hÅvÉwÉbÉ_ÉtÉ@ÉCÉãDždžÇËÇ‹Ç∑ÅBAppKit ÉtÉåÅ[ÉÄÉèÅ[ÉNì‡Ç…ÇÕÇ‹ÇΩÅANSOpenGLContext ÇΔ NSOpenGLPixelFormat ÇÃóºï˚ÇÃÇΩÇflÇÃêÈåæÇíÒãüÇ∑ÇÈÅuNSOpenGL.hÅvÉwÉbÉ_ǙdžÇËÇ‹Ç∑ÅBDZÇà 2 ǬÇÃÉNÉâÉXÇÕÅANSView Ç…â¡Ç¶ÅANSOpenGLView ÇÃÇΩÇflÇÃÉrÉãÉfÉBÉìÉOÉuÉçÉbÉNÇíÒãüǵNjÇ∑ÅBÉJÉXÉ^ÉÄÇÃÉRÉìÉeÉLÉXÉgèàóùÇ‚ÅAÇÊÇËçÇÇ¢è_ìÓê´Ç™ïKóvÇ»ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅANSView ÇÉTÉuÉNÉâÉXâªÇµÅANSOpenGLContext Ç NSView ÉTÉuÉNÉâÉXÇ…íºê⁄ÉAÉ^ÉbÉ`Ç≈Ç´Ç‹Ç∑ÅBNSOpenGLContext LJÅA-createTexture:fromView:internalFormat: ÉÅÉ\ÉbÉhÇΔ Pbuffer ÉCÉìÉ^ÉtÉFÅ[ÉXÇégǡǃÉeÉNÉXÉ`ÉÉÇ÷ÇÃÉåÉìÉ_ÉäÉìÉOÇÃã@î\ÇÉTÉ|Å[ÉgǵNjÇ∑ÅBCocoa OpenGL ÉTÉìÉvÉãÉRÅ[ÉhÇ… NSOpenGLView ÇÃégópó·Ç™Ç†ÇËÅACustom Cocoa OpenGL ÉTÉìÉvÉãÉRÅ[ÉhÇ…ÅANSViewÅANSOpenGLContextÅANSOpenGLPixelFormat ÇÉxÅ[ÉXÇΔǵÇΩÉJÉXÉ^ÉÄÉNÉâÉXÇÃégópó·Ç™Ç†ÇËÇ‹Ç∑ÅB

GLUT:

GLUT ÇÕÅAGL Utility Toolkit Çï\ǵNjÇ∑ÅBGLUT ÇÕÅAÉ}ÉãÉ`ÉvÉâÉbÉgÉtÉHÅ[ÉÄ API Ç≈džÇËÅAÉ\Å[ÉXÉåÉxÉãÇ≈ÇÃÉRÅ[ÉhÇÃå›ä∑ê´ÇΔÅAÉEÉCÉìÉhÉEÉCÉìÉ^ÉtÉFÅ[ÉXÇΔÉCÉxÉìÉgèàóùÇíÒãüǵNjÇ∑ÅBDZÇà API ÇÕÅAÇŸÇΔÇÒÇ«Çà UNIX ÉvÉâÉbÉgÉtÉHÅ[ÉÄÇΔÅALinuxÅAWindows Ç…é¿ëïÇ≥ÇÍǃǢNjÇ∑ÅBDZÇÃÇΩÇflÅAGLUT Ç≈ÇÕÅAï°êîÇÃÉnÅ[ÉhÉEÉFÉAÉvÉâÉbÉgÉtÉHÅ[ÉÄÇ…ÇÌÇΩǡǃÉRÅ[ÉhÇçƒóòópÇ≈Ç´Ç‹Ç∑Ç™ÅAUI óvëfÇΔÉCÉxÉìÉgèàóùÇÃëIëéàÇÕäÓñ{ìIǻLJÇÃǵǩíÒãüǵǃǢǻǢÇΔǢǧíZèäǙdžÇËÇ‹Ç∑ÅBDZÇÃÉåÉxÉãÇÃÉRÅ[ÉhÇÃçƒóòópÇïKóvÇΔǵǃǢÇÈÇØÇÍǫLJÅAçÇìxÇ»ÉÜÅ[ÉUÉCÉìÉ^ÉtÉFÅ[ÉXÇÕïKóvÇΔǵǻǢÉAÉvÉäÉPÅ[ÉVÉáÉìÇ…ÇÕóLå¯Ç≈Ç∑ÅBGLUT API ÇÃí∑èäÇà 1 ǬÇÕÅAóòópÇ≈Ç´ÇÈÉTÉìÉvÉãÉRÅ[ÉhÇ™ëΩêîdžÇÈDZÇΔÇ≈Ç∑ÅBÉAÉbÉvÉãÇÃÉTÉìÉvÉãÉRÅ[ÉhÇÃÇ§ÇøÅAGLUT ÇénÇflÇÈÇÃÇ…ìKǵǃǢÇÈÇÃÇÕ Basic GLUT ÉTÉìÉvÉãÇ≈Ç∑ÅB


[2003 îN 6 åé 19 ì˙]